home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 July / Macworld (1999-07).dmg / Shareware World / Info / For Developers / Mops 3.4.sea / Quick Edit ƒ / Quick Edit 3.0.3 ReadMe < prev    next >
Text File  |  1998-10-13  |  28KB  |  588 lines

  1.   \ 26Sep98 DBH
  2.  
  3. IMPORTANT TIP ABOUT READING THIS FILE:  While holding down the ctrl key, click
  4. the mouse anywhere in the window and a popup menu will appear.  The popup menu
  5. is an index into this ReadMe file.  By selecting from the menu you can quickly
  6. jump to various parts of this file.  You must, of course, be using Quick Edit
  7. to read this file.
  8.  
  9.  
  10.  
  11.  
  12. This information has been updated for version 3.0
  13.  
  14. :class WHAT THIS IS ****
  15.  
  16. Quick Edit (QE) is a programmer's source code editor intended for use with
  17. Mops, Michael's Object Oriented Programming System, and System 7. Typed Mops
  18. commands can be executed directly from an editor window, thus avoiding
  19. copy-switch-paste.  There is a lot more interaction between Mops and QE.
  20. Mops and QE work together to form an Integrated Development Environment.
  21.  
  22. Also included are a set of text files that comprise a Subject Sorted 
  23. Glossary for Mops definitions.
  24.  
  25.  
  26. :class NEW FOR VERSION 3.0 ****
  27.  
  28. QE 3.0 is a "maintenance" version.  No radically new features have been
  29. added.  A few problems have been cleaned up.  Existing features have been
  30. polished a bit.  Most importantly, QE is now compatible with Power Mops.
  31.  
  32. •    QE will now recognize either Power Mops or the 68K Mops when sending
  33.     AppleEvents.
  34.  
  35. •    Clicking in the lower left box will toggle the wordwrap or console
  36.     features.
  37.  
  38. •    Sometimes when printing, the first 2 lines overlapped somewhat.  This has
  39.     been fixed.
  40.  
  41. •    Shift-Return is now the same as Enter.  This was a request from a user.
  42.  
  43. •    Corrected some Glossary and Subject definitions.
  44.  
  45. •    The default setting for "Whole Word Search" in the Find... Dialog is
  46.     now user settable with the QEF1 resource number 9  (00 01 = on, 00 00 = off)
  47.  
  48.  
  49.  
  50. :class WHAT YOU NEED TO USE QUICK EDIT ****
  51.  
  52. 1) System 7.x
  53.  
  54. 2) Mops (Michael's Object Oriented Programming System version 3.x).
  55.  
  56. 3) The provided Mops Glossary file.
  57.  
  58. 4) I strongly recommend that you also use (load) the provided file "QEconsole"
  59. and turn on the Edit/Console feature for at least one of your open QE windows.
  60.  
  61.  
  62. Actually, 1) and 2) are not absolutely required as Quick Edit will function
  63. quite well as a stand-alone text processor without System 7 or Mops.  In that
  64. case you don't need 3) or 4) either.
  65.  
  66.  
  67. :class HOW TO USE QUICK EDIT ****
  68.  
  69. 1) Launch Quick Edit and use it to change your Mops.paths file (in folder
  70. Mopsƒ) to include any folders that you wish to contain Mops source code.  If
  71. you are unsure about how to do this, just save any newly created Mops source
  72. code (files you create with QE) in the folder Mopsƒ for now.
  73.  
  74. 2) Launch Mops.
  75.  
  76. 3) Load the provided file, QEconsole, into Mops.  Save your new Mops dictionary
  77. as, e.g., MopsQE.dic  (this step is not necessary, but is recommended).  Turn
  78. on the Edit/Console feature using the menu from within Quick Edit.  The word
  79. "console" will appear in the bottom left of the window.
  80.  
  81. 4) Now you should be able to execute typed Mops instructions from a QE window
  82. as if you were typing into the Mops window and any textual output, including
  83. stack items, will appear in your QE console window instead of the Mops console
  84. window.  See the Console feature.  Remember that you must use the enter key,
  85. not the return key, to execute commands.  
  86.  
  87.  
  88. :class CONSOLE
  89.  
  90. :m Console  A QE window can now become a front end for Mops.  All textual input
  91. *and* output is performed completely from within QE.  First, the file
  92. "QEconsole", provided with this release, must be loaded into Mops.  Then, by
  93. toggling the menu item Edit/Console, you can declare the current QE window to
  94. be a console window.  The word "Console" will appear in the lower left corner
  95. of the window.  Other windows will be unaffected.  I strongly suggest that you
  96. try this.  More details are provided later in this file.  You can also toggle
  97. the console feature by clicking the mouse on the spot in the window where the
  98. word "Console" appears when turned on.
  99.  
  100.  
  101. :m > prompt  After pressing enter from a console window you will get a ">"
  102. prompt from Mops, followed by any stack items that may be present.  For
  103. example:
  104.  
  105. 3 4 <enter>
  106. >3 4 
  107.  
  108. You can still enter Mops commands from non-console windows, but any output will
  109. appear in the Mops console instead of the current QE window.  This behavior is
  110. desirable for source code files that you don't want to become "littered" with
  111. output from Mops.  Of course, you can declare any window or file in QE to be a
  112. console window if you wish.  I typically leave my source code windows as
  113. non-console, and have one untitled window as a console.
  114.  
  115. You must still switch over to Mops in order to perform user interface actions. 
  116. But I think you will find that a QE console window can greatly enhance your
  117. development productivity because all of the QE programmer support features are
  118. immediately available:  Glossary, Open Source, Edit File, Save&Load, etc.
  119.  
  120. If you get an error message, such as when trying to execute an undefined Mops
  121. word, you may see something like the following:
  122.  
  123. foo <enter>
  124.  
  125. undefined word
  126. >QECONS foo
  127.            ^
  128. Don't worry about the presence of >QECONS ( or NEWVECS ).  These commands are
  129. being sent by QE to Mops each time an AppleEvent is sent.  The purpose is to
  130. reset the Mops output vecs each time because Mops does not know what kind of QE
  131. window, console or non-console, is currently in use.  See the file "QEconsole"
  132. for exact details of what is going on if you are interested.
  133.  
  134.  
  135. :class MOPS GLOSSARY ****
  136.  
  137. ***IMPORTANT***
  138. You must keep the file "Mops Glossary" in the same folder as Quick Edit.
  139.  
  140. While using QE it is possible to summon the glossary to look up a definition in
  141. either of 2 ways.  First, you may highlight a word in a QE window and then
  142. invoke the Mops/Glossary menu command (or command-Y).  If you do not highlight
  143. a word, then the first word to the left of the cursor will will be used as the
  144. search word.  Or, if you simply placed the cursor in the middle of a word, then
  145. that word will be used.  If found in the glossary, the word and its definition
  146. will appear in a special window.  A second way to use the glossary is to just
  147. invoke the Mops/Glossary menu command and then begin typing the word that you
  148. wish to look up.  MacForth users will recognize this as the Online Glossary
  149. feature from the Sibley Editor.
  150.  
  151. If no QE window is open, then the Glossary feature will be unavailable.
  152.  
  153. You may copy text from the Glossary.   For each definition in the Glossary we
  154. have the stack effect immediately to the right of the name.  Further to the
  155. right, on the same line, we have the Subject Name and File Name (the name of
  156. the Mops file that contains the source code for the word) in
  157. SubjectName/FileName format.
  158.  
  159. We have included a file, Stack Notation, to define the stack effect
  160. notation used here.
  161.  
  162. For most subjects we have a Subject Glossary file in the folder Subject 
  163. Glossary.  In these files you will find all related words grouped together 
  164. in a logical manner by function, rather than by ASCII order.  I find
  165. that printing all of the Subject Glossary files and placing them in a
  166. hole-punch binder with index tabs is an excellent way to keep a quick
  167. reference.  You can also print the ASCII sorted glossary if you want, it's just
  168. a text file, but it is really intended for interactive use within QE.   From
  169. the Glossary you can obtain the source file name, see where the source file is
  170. located from the Mops File Index, and then open the source file to see the
  171. actual definition.  Note that one can now easily open the source for already
  172. compiled code simply by highlighting a word in QE and invoking the Mops/Open
  173. Source menu command (command-=), as long as Mops itself is also running.  
  174. You may delete and add to the glossary yourself, but only if you open
  175. the file "Mops Glossary" as a normal edit file, not as it is opened
  176. as the QE glossary window.  Added definitions MUST be in ASCII order
  177. and begin in the first column on a new line.  Only definition names may
  178. begin in the first column.
  179.  
  180. :class BROWSING MOPS DEFINITIONS AND FILES ****
  181.  
  182. Particularly convenient is the ability to quickly "browse" Mops definitions and
  183. source files from within Quick Edit while Mops is also running.  By selecting a
  184. Mops word or Mops source file name, you can have the file containing the
  185. definition of that Mops word, or simply the named file, opened into QE with the
  186. menu commands Mops/Open Source and Mops/Edit File.  If you do not highlight a
  187. word, then the first word to the left of the cursor will will be used as the
  188. lookup word or file name.  I highly recommend that you try this, I use it all
  189. the time.  Note that it is not necessary for a file to be loaded in order to
  190. summon it via Edit File, but the file must be in the path specified by your
  191. Mops.paths file.  Also note that module source files can be opened by just
  192. selecting the module name, you do not have to select the actual module source
  193. file name which will have ".txt" appended, although you still could.
  194.  
  195. Not all Mops definitions can be browsed this way.  Definitions that occur prior
  196. to a file lookup utility, such as all Nucleus definitions (in source files
  197. Nuc1.asm, Nuc2.asm, etc.), cannot be looked up with the Mops/Open Source
  198. command.  In fact, an attempt to do so will result in no response at all.  If
  199. this happens to you, you should next try invoking the Mops/Glossary command and
  200. you should see the definition of the word there (and the Glossary definition
  201. will confirm that this is a nucleus definition).
  202.  
  203. :m Popup Browser  As before, holding down the ctrl key while clicking the mouse
  204. anywhere in the window will cause a popup menu to appear.  The popup is an
  205. index into any class and method definitions in the current window.  New for QE
  206. 2.7 is a similar popup for normal Forth colon definitions.  Press
  207. ctrl-option-click to summon it.  By selecting from the menu you can quickly
  208. jump to various parts of the file.
  209.  
  210.  
  211. :class SUBJECT GLOSSARY ****
  212.  
  213.  ***IMPORTANT***
  214. You must keep the folder "Subject Glossary" in the same folder as Quick Edit.
  215.  
  216. We have included a set of normal text files that comprise a "Subject Sorted 
  217. Glossary".  The purpose of these files is to allow the programmer to quickly
  218. review the available word set for a given category of words.  This avoids 
  219. having to read the entire Glossary (which is ascii sorted) in order to find
  220. out what is available.
  221.  
  222. You can directly open any of these files via menu access to the Subject 
  223. (sorted) Glossary.  Under the Mops menu.  
  224.  
  225. :m Custom Subject Menu  The Subject Glossary now has its own menu.  The menu
  226. items are the file names of the corresponding files in the Subject Glossary
  227. folder.  You can customize this menu simply by adding or deleting to the menu
  228. resource of QE.  If you add new file names to the subject menu then you must
  229. also provide the file with the *same* name in the Subject Glossary folder. 
  230. Alphabetic order is not a requirement.  You must not rename or move the Subject
  231. Glossary folder.
  232.  
  233. :class TIPS ****
  234.  
  235. Change the file Mops.paths to include the directory (folder) that your QE files
  236. are in and you will be able to use the QE menu commands Load… and Save&Load
  237.  
  238. Save&Load is probably the most used command for me.  My typical Mops
  239. programming session goes like this:
  240.  
  241. • Launch both Mops and QE
  242. • Open or create a source code file, don't declare it as a QE console.
  243.   Actually, you can declare your source file as a console, but when you
  244.   do a Save&Load your window will then become "littered" with file loading
  245.   messages and so forth.  If you place an "ENDLOAD" at the end of you file
  246.   and then make sure to jump the cursor to the end of the file (e.g. command
  247.   option downarrow), then the litter will cause no problems.
  248. • Invoke Save&Load  (command-K), any compilation errors will cause the
  249.   QE window to scroll to the first occurrence of the offending code.  I can
  250.   then edit the mistake and Save&Load again.  This is *very* quick and also offers
  251.   the added protection of saving code to disk before any fatal crashes could occur.
  252. • Interactive testing of small snippets of code are usually done in a QE console window.
  253. • With a console window, I typically don't even bother to arrange the windows so that
  254.   I can also see the Mops console window.  There is no need.
  255. • But with a non-console window I typically keep all of the QE windows in "right half" mode,
  256.   easy to do with the Window/Right Half or Window/All Windows->Right commands.  This way
  257.   I can still execute commands from QE, or use Load... or Save&Load, and see the resulting
  258.   output in Mops (which is visible on the left side of my screen).
  259. • I frequently use the Glossary, source code browser, Edit File command, and popup browser
  260.   in my Mops programming sessions.
  261.  
  262. Position both the Mops window and your current QE window so both are visible,
  263. unless you are using a QE console window where it is not necessary to see the
  264. Mops console window.
  265.  
  266. Pressing enter will execute either just the selected range, or if there
  267. is no selection the entire line will be executed.  Multiple lines or an
  268. entire file may be executed this way.
  269.  
  270. Pressing enter will normally advance the cursor to the end of the next
  271. line.  Hold down the option key to keep the cursor on the same line.
  272.  
  273.  
  274. :class ABOUT QUICK EDIT ****
  275.  
  276. Quick Edit is written in MacForth and is, for the large part, the 
  277. MacForth text editor, or Sibley Editor, with extensions to use Apple Events 
  278. for Mops communication.  I also added my favorite tweaks to the editor. 
  279. Actually, especially now with version 2.7, the source code for QE is bearing
  280. less and less resemblance to MacForth.  For example, thanks to MacForth's
  281. separated headers and flexible vocabulary management, I have been able to
  282. rename even MacForth kernel words to names that make more sense to me.  For
  283. example, words that simply invoke a toolbox call are now named the same as the
  284. toolbox call.  The Basic text engine is MacForth's, as is a lot of the
  285. difficult file handling stuff.  Kudos to the guys that created this stuff which
  286. include Dave Sibley, Ward McFarland, Xan Gregg, and a few others.
  287.  
  288. You MacForthers may be interested in knowing that Quick Edit duals as my
  289. MacForth programming environment (as a snapshot, not a turnkey).  No surprise. 
  290. There is a global switch that is used to change from QE-as-Mops-editor to
  291. QE-as-MacForth.  All of the programmer's assist features are available in
  292. either mode and behave the same in either mode, except in a different context. 
  293. In fact, with the new console feature it is easy to forget which environment
  294. one is using (so I keep a bold "M" or "Q" in the lower left of each window as a
  295. reminder, during development only).
  296.  
  297. QE behaves mostly in the standard Macintosh manner and so should be fairly easy
  298. to learn.
  299.  
  300. MacForth users will of course feel pretty much at home except for a few
  301. exceptions that are explained later.  
  302.  
  303. I wrote QE as a tool to make it easier for me to use Mops.  If one
  304. has a desire to explore Forth object oriented programming ( FOOP?
  305. Forth++? ), then a look at Mops is a must.  You will likely find that you
  306. will soon stop exploring and begin writing useful code at a very high
  307. level of productivity.
  308.  
  309.  
  310.  Doug Hoffman 
  311.  
  312.  565 Countryside Lane
  313.  Oakland, Michigan  48363-1401
  314.  USA
  315.  
  316.  112074.1041@compuserve.com
  317.  
  318.  
  319.  
  320. :class DETAILS OF USING QUICK EDIT ****
  321.  
  322. :m #ofWindows Up to 20 files (windows) can be open at the same time.  The open
  323. QE file names will appear under the Windows menu and will be preceded by
  324. bullets if the files have unsaved changes.
  325.  
  326. :m Search Shortcuts There are several useful text search shortcuts that bypass
  327. the Find... dialog. Option-Doubleclick on a word to find the first occurrence.
  328. A subsequent Command-G (Find Same) will then find the next occurrence. Any time
  329. a search fails a simple beep will be issued and the cursor will remain where it
  330. last was.  Command-Doubleclick on a word to do a backwards  search (i.e.
  331. attempt to find the first prior occurrence).  Option- Command-Doubleclick on a
  332. word to find the next occurrence.
  333.  
  334. If the Text Search dialog is summoned (via Command-F or the menu) any
  335. highlighted text will automatically become the "Search for" parameter.  If
  336. no text was highlighted then the prior "Search for" text will remain.
  337.  
  338. All searches begin at the current selection point and end at the end of
  339. the file.  If the Text Search dialog is used one can also search all files in
  340. the same directory (folder) as the open file.  Holding down the shift key when
  341. either summoning the Text Search dialog or doing a Find Same (Command-G) will
  342. cause the search to be initiated from the beginning of the file.
  343.  
  344. :m Command-` (Enter Search$) will enter the hilited text as the search string
  345. without summoning the Text Search dialog.  This is useful for "loading" some
  346. text to search for in one window and then moving to another  window to do the
  347. search.  A Command-Shift-G will start the search at the beginning of the file. 
  348. This can be handy.  Command-Shift-F will  also start the search at the
  349. beginning of the file, but will summon the Text Search dialog.
  350.  
  351. A Popup menu is available that will list all classes and their methods
  352. for the current window.  A ctrl-click in a QE window that contains Mops source
  353. code will yield the menu.  The menu selection will cause a jump to the source
  354. code for the class or method.  Ctrl-option-click will give a popup just for
  355. colon definitions.
  356.  
  357. :m JumpMarks Up to 10 "bookmarks" or jumpmarks can be set by pressing
  358. Command-Shift-J followed by a number (0 through 9).  Note that after invoking
  359. the menu item nothing else can happen until you press a key.  If you don't
  360. press a number key then QE will simply "beep" at you indicating that no
  361. bookmark was set.  One then jumps to these bookmarks by pressing  Command-J
  362. followed by pressing the corresponding single digit number key.  Again, nothing
  363. else can happen until you press a key.  After pressing Command-J, you can
  364. optionally press B, E, or L, to jump to the file Begining, End, or Last
  365. position prior to the last jump.
  366.  
  367. Modifier keys for cursor movement works as follows:
  368.  
  369. Option left/right        move cursor one word
  370. Option up/down            move one line
  371. Command left/right        move to beginning or end of line
  372. Command up/down            move to beginning or end of screen or prev/next screen
  373. Command-Option up/down    move to beginning or end of file
  374. Option-Delete            delete previous word
  375. Command-Backspace        delete to beginning of file
  376. Command-Delete            delete to end of file
  377.  
  378.  
  379.  
  380. :m MiniPrint...  is intended for use only with high resolution printers having 
  381. scalable fonts such as LaserWriters or the StyleWriter.  MiniPrinting 
  382. will print in a very small Helvetica font and allow for a paper savings 
  383. of 3-4 to 1 in most cases.  I find this useful for printing drafts
  384. and reducing the quantity of paper used.
  385.  
  386. If the printed page seems wrong, try using the Page Setup...  command and
  387. select portrait orientation at 100% scale.
  388.  
  389. :m SmartScrap Note that cutting and pasting will normally delete and add extra
  390. spaces as necessary in a fashion similar to WriteNow.  This feature is only
  391. activated  after text is hilited via a doubleclick and is then cut or copied.
  392.  Text  that is hilited via shift-extension or singleclick-drag will be cut
  393. and pasted in the normal fashion (i.e. no extra spaces will be automatically
  394. added).
  395.  
  396. :m AutoIndent Also note that indents via tabs or spaces will be repeated on
  397. subsequent lines upon return unless the option key is pressed.  Auto-Indent is
  398. toggled from the menu.
  399.  
  400. :m Word Delimiters  In most word processors characters such as a period (.) are
  401. treated as a word delimiter.  So doubleclicking something like " this.word " in
  402. most word  processors will only hilite this or word, depending upon where you
  403. first clicked.  Also, in most word processors a whole word search on " this "
  404. will hit on " this.word " and other compounds of " .this.  ".  Since Forth does
  405. not treat a period as a delimiter, I have chosen to have Quick Edit do
  406. likewise.  So a period, and other normal word delimiters are *not* delimiters
  407. in QE.  This behavior may be different from what you are used to.
  408.  
  409. The Mops menu contains a few handy Mops commands that will clear the stack or
  410. the Mops window.
  411.  
  412. A multiple line indent/unindent command is also available in the Text menu.
  413.  
  414.  
  415. :class DYNAMIC WORD WRAP ****
  416.  
  417. I must be quite honest here and explain that QE's dynamic wordwrap feature is
  418. still somewhat "under development".  The implementation in QE 2.6 was pretty
  419. buggy and in retrospect should not have been included.  Dynamic wordwrap in 2.7
  420. is improved but as yet imperfect.  It seems to work best for paragraphs that
  421. are not too long (say 10 lines or less).  Beyond that it does not always work
  422. perfectly (but the imperfections are benign).
  423.  
  424. Also, I should warn that this feature takes a little getting used to.  It is
  425. best to leave it turned off unless you know that you are editing a paragraph
  426. that you want to wrap.  If you forget that it is turned on and you start to
  427. edit some source code you will probably be surprised and annoyed by the
  428. behavior.  However, when used judiciously the dynamic wordwrap can be a useful
  429. feature because you can just type and edit your thoughts without regard to the
  430. current line length.
  431.  
  432. Note that wrapping the selection or entire file should not cause any problems
  433. for you (those are much easier tasks), so use those commands without concern.
  434.  
  435. When activated, word wrap will occur as expected, with a couple of unique
  436. characteristics.  One important difference in the way QE wraps text, compared
  437. to conventional word processors, is that carriage returns are still maintained
  438. at the end of each line.  This is done in order to remain compatible with the
  439. programming source code files as they are expected by most programming
  440. languages, including of course Mops.  Another advantage is that QE can remain
  441. very fast while still providing a word wrap function.  If you take a look at
  442. other text processors that word wrap you will notice a considerable slowing
  443. when wrap is turned on for files of any significant size.  QE does not slow
  444. down at all!
  445.  
  446. Note that QE's word wrap does much more than simply insert a CR
  447. automatically as you type.  QE will look at the paragraph in which the
  448. cursor resides and perform wrapping on the entire paragraph, and only that
  449. paragraph, automatically as you type.  So there is the second important
  450. difference from the norm in QE's word wrap.  Word wrapping will *only*
  451. occur in the current paragraph ( a paragraph in QE is any text that is
  452. delimited by blank lines).  This means that you could turn on word wrap in
  453. the middle of some source code with very long lines and your typed text
  454. would be wrapped while not affecting the rest of the file.  Be careful
  455. though, because if you forget that wordwrap is activated and start typing
  456. in some long source code lines, then those lines will get split up and a
  457. simple undo is not available (although a File/Revert... is a good way to
  458. recover from this if necessary).  WordWrap is activated through the AutoWrap
  459. menu command under the Text menu.  A bold "W" is also placed at the lower left
  460. of the window as a reminder.  You can also toggle wordwrap on and off by
  461. clicking on the spot where the bold "W" appears.  WordWrap only applies to
  462. files that you specify.  WordWrap activation and length is saved with each
  463. file.  You set the wrap length with the Text/Set AutoWrap... menu command.
  464.  
  465.  
  466. :class FONTS/PRINTING ****
  467.  
  468. :m Cancel Printing  You can cancel a print job that is spooling by pressing
  469. command-. (command-period), even though there is no dialog indicating as such.
  470.  
  471. :m Normal Printing  After receiving comments, it became clear that a normal
  472. sized printing function should be included without having to fuss with the
  473. resources.  So selecting File/Print... will yield a Monaco 9 "large type"
  474. print.  Also, the 2 different forms of miniprinting are now directly available
  475. from the File menu. MiniPrint(1 col)... will yield a 1 column monospaced print
  476. that is fairly condensed.  MiniPrint(2 col)... will yield a 2 column
  477. proportionally spaced print that is the most condensed.
  478.  
  479.  
  480. The window and printer font IDs and font sizes are now resources (QEF1) and so
  481. can be changed to suit.  You must use a resource editor.  I know this isn't 
  482. very Mac-like, but it was easy to implement (and we're all programmers  here,
  483. right?).  
  484.  
  485. The QEF1 resources affect things as follows:
  486.  
  487. RESOURCE ID        AFFECTS                        DEFAULT VALUE
  488.  
  489. 1                window font    ID                $00C8    Modified Monaco (MUST be mono-spaced)
  490. 2                window font size            $0009
  491.  
  492. 3                miniprint(2col) font ID        $0015    Helvetica
  493. 4                miniprint font size            $0007
  494.  
  495. 7                miniprint(1col) font ID        $0016    Courier
  496. 8                option miniprint font size  $0007
  497.  
  498. Note that the window font MUST be mono-spaced.  But this is not a requirement 
  499. for the miniprint fonts.  In fact, the Helvetica default miniprint font, which 
  500. is proportionally spaced, is used to allow two columns per page due to the 
  501. relatively high character linear density.  
  502.  
  503. We use a proper programmer's screen font that clearly distinguishes  
  504. characters that are ambiguous with the Monaco font.  Zero(0) vs. capital
  505. "Oh"(O), Capital"I"(I) vs. lowercase "el"(l).
  506.  
  507. :m MiniPrinting  All miniprinting will yield approximately 104 lines per column
  508. (standard 81/2 x 11 inch paper) on most printers.  Printing will always wrap
  509. long lines.
  510.  
  511.  
  512.  
  513. :class OTHER FEATURES ****
  514.  
  515. :m Edit File Mops/Edit File (command-E) menu command.  Hilite the name of a
  516. file and then invoke this menu command.  Or simply type the file name and
  517. invoke the menu (the text to the left of the cursor will be automatically
  518. selected).  The file will be opened.  Also works for module filenames without
  519. having to first append ".txt".
  520.  
  521. • There is now an "AllWindows->Right" Windows menu command.  Useful for getting all
  522.   open editor windows off to one side so the Mops window can be viewed while still
  523.   in Quick Edit.
  524.  
  525. :m File WordWrap   You can now wordwrap an entire file instantly with the
  526. Text/Wrap File... menu command.  You can also "unwrap" an entire file with the
  527. Text/Unwrap File command.  You may wish to unwrap a file so you can copy and
  528. paste into a word processor that provides conventional "soft" wrapping of text.
  529.  
  530. :m Detab File  You can now convert all tabs in a file to spaces with the
  531. Text/Detab File menu command.  This will be convenient when, for example,
  532. pasting QE text into another text processor that does not recognize tabs.
  533.  
  534. :m Magic Copy   What??   Well, I couldn't think of another name for this.  If
  535. you hold the mouse I-beam over a word (don't click there) and invoke Copy via
  536. command-C, then that word will be pasted at the current cursor location.  But
  537. only if nothing was selected.   I find this to be handy when constructing
  538. definitions comprised of long words that are also nearby (a common situation).
  539. This is much quicker and easier than double-clicking, copying, repositioning
  540. the cursor, and finally pasting.  Besides, all a copy would do before, if
  541. nothing was selected that is, was beep.  Surely we must have something more
  542. useful than that...
  543.  
  544. :m Page ID...  There is now an option to use up to 5 characters as an
  545. additional "ID" for a file.  Use the Edit/Page ID... menu command.  The ID will
  546. appear in the lower left of the window and will be saved with the file.  You
  547. may wonder "What is this for?", which is a valid question.  I use this as an
  548. aid to manage printouts of large projects that consist of many files.  For
  549. example, one could assign numbers, perhaps 10, 20, 30, and so on to each file. 
  550. Individual files may require more than one page to print, but the ID numbering
  551. system is a way to keep things in order without having to reprint everything
  552. when only one file has been changed.  This is somewhat reminiscent of the old
  553. Forth blocks files "triad" printing technique.  The MacForth source code for
  554. QE now consists of over 100 files.  I find it useful to organize them this way.
  555.  The page ID will print in the lower right of each printed page.  Normal page
  556. numbering within the file is as always.
  557.  
  558.  
  559.  
  560. :class PACKING LIST ****
  561.  
  562. The following is a list of all files that should be present in the  Quick Edit
  563. release set that includes the Quick Edit application:
  564.  
  565. Quick Edit ReadMe
  566.  
  567. Mops Glossary
  568.  
  569. QEconsole
  570.  
  571. Stack Notation
  572.  
  573. Subject Glossary  (a folder)
  574.     Arithmetic
  575.     Compiler
  576.     Console
  577.     Control Structures
  578.     Events
  579.     Floating Point
  580.     Memory
  581.     OOP
  582.     QuickDraw
  583.     Stack
  584.     Strings
  585.     System
  586.     Toolbox 
  587.     
  588.